package com.registerserver.dao;

import java.sql.Date;
import java.sql.SQLException;
import java.util.List;

import com.registerserver.dto.SubjectAndMark;
import com.registerserver.dto.Units;
import com.registerserver.model.Course;
import com.registerserver.model.Student;
import com.registerserver.model.Studying;
import com.registerserver.model.Subject;

public interface StudyingDao {
	
	// get marks and response units of all of student's subject to calculate "diem tich luy"
//	public List<Units> getMarkOfAllSubjects(String studentID) throws SQLException;
	
	// tính điểm tích lũy của sinh viên 
	public double getOverAllMarkOfStudent(String studentID) throws SQLException;
	
	public int getSemester(String studentID);
	
	// lấy thông tin các môn học của sinh viên 
	public List<Subject> getSubjects(String studentID, int semester) throws SQLException;
	
	// Student register the new course
	// return 0: Khong thanh cong
	// return 1: thanh cong
	// return 2: khong thanh cong, thong bao lop hoc phan da du sinh vien dang ki
	public int addNewStudying(String subjectID, Course course, Student student, Date registerDate, double mark) throws SQLException;
	
	// Manager update new info to course such as : mark of student...?? vo ly
	public boolean updateStudying(String subjectID, Course course, Student student) throws SQLException;
	
	// Update mark for sinh vien 
	public boolean updateMark(String studentID, String subjectID, String courseID) throws SQLException;
	
	// Delete course of student when they register study again
	public int deleteStudying(String studentID, String subjectID, String courseID) throws SQLException;
	
	// lấy số lượng sinh viên của một môn học phần để kiểm tra sĩ số
	public int countStudentRegistered(String courseID, String subjectID) throws SQLException;
	
	// lấy số lượng sinh viên tối đa của 1 lớp 
	public int getMaxSizeOfCourse() throws SQLException;
	
	// lấy điểm của một môn học 
	public double getMark() throws SQLException;
	
	public List<SubjectAndMark> getMarkOfAllSubject(String studentID) throws SQLException;
}
